package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.system.domain.*;
import org.apache.poi.ss.formula.functions.T;

import javax.servlet.http.HttpServletRequest;

/**
 * 微信  服务层
 * 
 * @author admin
 */
public interface IWeixinService{
    /**
     * 微信code 列表(分页)
     * @param wxCode
     * @return
     */
    public List<WxCode> selectWxCodeList(WxCode wxCode);
    
    public List<WxCode> selectWxCodes();
    
    /**
     * 微信user 列表 (分页)
     * @param wxUser
     * @return
     */
    public List<WxUser> selectWxUserList(WxUser wxUser);
    /**
     * 公众号下微信user 
     * @param codeId
     * @return
     */
    public List<WxUser> selectWxUserByCodeId(String codeId);

    /**
     * 模板列表页(分页)
     * @param wxSendMsgModel
     * @return
     */
    public List<WxSendMsgModel> selectWxSendMsgModelList(WxSendMsgModel wxSendMsgModel);

    public List<WxSendMsgModel> selectWxSendMsgModels();

    /**
     * 发送日志列表
     * @param wxSendMsgLog
     * @return
     */
    public List<WxSendMsgLog> selectWxSendMsgLogList(WxSendMsgLog wxSendMsgLog);

    /**
     * 定时群发
     * @param wxGroupSendingSchedule
     * @return
     */
    public List<WxGroupSendingSchedule> selectWxGroupSendingScheduleList(WxGroupSendingSchedule wxGroupSendingSchedule);
    public List<WxGroupSendingSchedule> selectSendingScheduleDatas(String methodName);

    /**
     * 添加发送日志
     * @return
     */
    public int insertWxSendMsgLog(WxCode wxCode,String accessToken,int successNum,int errorNum,String remark);

    /**
     * 校验对象实体
     * @param appId
     * @return
     */
    public WxCode getEntityByAppId(String appId);
    /**
     * 校验对象实体
     * @param id
     * @return
     */
    public WxCode getEntityById(Long id);

    /**
     * 获取错误信息
     * @param errCode
     * @return
     */
    public WxErrCompare selectWxErrCompareByErrCode(String errCode);

    /**
     * 修改保存微信号信息
     *
     * @param wxCode
     * @return 结果
     */
    public int updateWxCode(WxCode wxCode);

    /**
     * 校验对象实体
     * @param wxCode
     * @return
     */
    public WxCode getEntityByWxCode(String wxCode);
    
    /**
     * 校验微信号名称是否唯一
     * @param wxCode
     * @return
     */
    public String checkWxCodeUnique(WxCode wxCode);
    
    /**
     * 校验openID是否唯一
     * @param wxUser
     * @return
     */
    public String checkOpenIdUnique(WxUser wxUser);


    /**
     * 获取模板实体
     * @param modelId
     * @return
     */
    public WxSendMsgModel getwxTemplateById(Long modelId);

    public WxGroupSendingSchedule getSendingScheduleById(Long id);

    /**
     * 新增保存微信号
     * 
     */
    public int insertWxCode(WxCode wxCode);
    
    /**
     * 新增保存微信用户
     * 
     */
    public int insertWxUser(WxUser wxUser);

    /**
     * 新增保存模板
     *
     */
    public int insertWxSendMsgModel(WxSendMsgModel wxSendMsgModel);

    /**
     * 新增定时器模板
     *
     */
    public int insertSendingSchedule(WxGroupSendingSchedule sendingSchedule);

    public int updateSendingSchedule(WxGroupSendingSchedule sendingSchedule);


    /**
     * 修改保存微信模板信息
     *
     * @param wxSendMsgModel
     * @return 结果
     */
    public int updateWxSendMsgModel(WxSendMsgModel wxSendMsgModel);

    /**
     * 批量删除微信号信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     * @throws Exception 异常
     */
    public int deleteWxCodeByIds(String ids) throws Exception;

    /**
     * 批量删除微信模板信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     * @throws Exception 异常
     */
    public int deleteWxSendMsgModelByIds(String ids) throws Exception;

    /**
     * 批量删除微信模板消息信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     * @throws Exception 异常
     */
    public int deleteWxSendMsgLogByIds(String ids) throws Exception;


    /**
     * 批量删除微信群发定时消息
     * @param ids
     * @return
     * @throws Exception
     */
    public int deleteSengdingSchduleByIds(String ids) throws Exception;
    
    public WxUser getWxUserByAccessUser(String ACCESS_TOKEN,String OPENID) throws Exception ;


    public int groupSending(int type,String wxCode,String jsonStr,String remark);

    /* 转换成群发模板 */
    public String ObjectToJson(WxSendMsgModel sendMsgModel);


    /**
     * 微信公众号处理
     * @param request
     * @return
     */
    public String newMessageRequest(HttpServletRequest request, WxCode code);

}


